Referring to FIG. 1, many digital systems have data busses and other data communication lines which contain many parallel communication paths. For instance, a typical cable that carries data between a computer and its printer will have sixteen or more parallel data lines as well as a number of parallel control signal lines. Parallel data lines are frequently used simply because it is possible to transmit data much faster over N parallel lines than over a single data line.
In many cases, parallel streams of data are transmitted from a source to a destination over a path in which the delays to which the parallel bit streams are subjected cannot be accurately controlled. Variable delays are introduced not only by differing lengths of the signal paths, but also by variations in the delay of drivers and receivers. In order for the receiver at the destination to accurately recover the data the individual data bits must be sampled by a clock at the receiver. This clock can have the same frequency as the transmitter, but the transmitter and receiver will not necessarily have the same phase, further exacerbating the problem of correctly receiving the data.
The need for deskewing parallel bit streams increases as the transmission speed from source to destination is increased because the differences in propagation delays between parallel lines becomes a more significant fraction of the time window in which the data must be sampled. For instance, if the maximum difference in propagation delays of a set of parallel communications paths is four nanoseconds, equivalent to 0.04 clock periods when transmitting at a rate of 10 Megabits per second, that same maximum difference in propagation delays is equivalent to 0.5 clock periods when transmitting at a rate of 125 Megabits per second.
The need for deskewing also increases as the differences in delay of the signal drivers and receivers for each bit increase relative to the period of the system's clock. This problem is particularly acute when a manufacturing technology such as CMOS is used for drivers and receivers, since it is difficult to produce a number of circuits with identical delays using that manufacturing technology.
FIG. 1 shows a "snap shot" representation of a set of parallel bits being transmitted at the source, and a representation of the same bits at the input port of the destination. The function of the deskewing buffers of the present invention is to convert the received, skewed streams of digital data into deskewed streams, and also to adjust these streams of data so that each bit is accurately sampled by a defined clock signal at the receiver.